/**
 * 
 */
package recognition.input;

import handwritten.gesture.MultiGesture;

import java.io.Serializable;

import javax.xml.bind.annotation.XmlSeeAlso;
import javax.xml.bind.annotation.XmlTransient;


/**
 * @author Louis
 *
 */
@XmlTransient
@XmlSeeAlso({CellInput.class})
public abstract class Input<T> implements Serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = 305005042228482735L;
	private T input;
	
	protected Input(MultiGesture gesture){
		input = createInput();
		fillInput(gesture);
	}
	
	public Input(){}
	
	public abstract Input<T> createInput(MultiGesture gesture);
	
	//physicaly make the input variable
	protected abstract void fillInput( MultiGesture gesture);
	//initialise the input object
	protected abstract T createInput();


	public T getInput() {
		return input;
	} 
	
	/**
	 * @param input the input to set
	 */
	public void setInput(T input) {
		this.input = input;
	}
	
}
